class Student:
    """
    此类是构建学生类
    """

    daily = '学习'
    examination = '考试'

    def __init__(self,n,a,h):

        # self.n = '小黑'
        # self.sex = '随便'
        self.name = n
        self.age = a
        self.hobby = h

    def work(self,c):
        # self.color = '绿色'
        self.color = c
        print(f'{self.name}每天要上课')

    def homework(self):
        # 利用self 对象空间,为所欲为
        print('家庭作业')

# obj = Student()  # 类名() 过程就叫做实例化过程,实例化一个对象
# print(obj)  # 对象,实例
# obj1 = Student()
# print(obj1)

# obj = Student()
# print(obj)

# 实例化一个对象时发生了三件事:
# 1. 在内存中创建一个对象空间.
# 2. 自动执行__init__方法,并且将对象空间传给self参数.
# 3. 执行__init__方法里面的代码,给对象空间封装其属性.

# 从对象角度研究类:
# 对象操作对象里面的属性.
# obj = Student()
# print(obj)
# 对象查看全部属性
# print(obj.__dict__)

# 对象可以操作对象空间的属性  万能的点
# obj = Student()
# # obj.age = '29'  # 增
# # del obj.n  # 删
# # obj.sex = '女'# 改
# print(obj.n)  # 查
# print(obj.__dict__)

# liye = Student('小黑',21,'洗头')
# mc_sq = Student('骚强',18,'高端会所')
# print(liye.__dict__)
# print(mc_sq.__dict__)

# 对象查看类中的属性.
# mc_sq = Student('骚强',18,'高端会所')
# # print(mc_sq.daily)
# mc_sq.daily = '骚麦'
# print(mc_sq.daily)
# print(mc_sq.__dict__)


# 对象调用类中的方法
liye = Student('小黑',21,'洗头')
# print(liye.__dict__)
# liye.work()
liye.work('绿油油')
print(liye.__dict__)

# self 就是类中方法的第一个位置参数,
#  如果通过对象执行此方法,解释器就自动的将此对象空间当做实参传给self.
# 约定俗称: 类中的方法第一个参数一般都设置成self.